Large-scale distributed computing systems often synchronize certain data among different nodes of the system. For example, some systems may use a gossip protocol to synchronize local data maintained on each node, such as cluster membership or node state information. In such a protocol, a node may regularly gossip with other nodes about the data so that a synchronized state of the data may be reached among the nodes after a certain period of time. However, depending on the number of nodes in the system and the size and frequency of gossip communications, the gossip protocol may impose a substantial burden on the system in terms of network load. It is thus generally desirable to improve such gossip protocols to achieve synchronization more quickly without imposing an excessive load on the system's network.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include,” “including,” and “includes” mean including, but not limited to.
It will also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first contact could be termed a second contact, and, similarly, a second contact could be termed a first contact, without departing from the scope of the present invention. The first contact and the second contact are both contacts, but they are not the same contact.